Skip to content

release: v0.9.5#17

Merged
I4cTime merged 3 commits into
mainfrom
develop
May 13, 2026
Merged

release: v0.9.5#17
I4cTime merged 3 commits into
mainfrom
develop

Conversation

@I4cTime
Copy link
Copy Markdown
Owner

@I4cTime I4cTime commented May 13, 2026

Summary

v0.9.5 — ScopeBuddy integration, gamepad tester, Ctrl+K command palette, and a new Quickemu-based VM test harness with docs reachable from inside the guest via the SMB share. Plus a long-overdue navbar version that now reads app.getVersion() so it auto-tracks every future bump.

What ships

App + UI

  • Version sources bumped to 0.9.5 in lockstep: electron/package.json, electron/renderer/package.json, src/game_setup_hub/__init__.py, assets/io.github.protonshift.metainfo.xml, bug_report.yml placeholder.
  • Navbar version wired to app.getVersion() via new get-app-version IPC handler + electron.getVersion() preload bridge. Replaces the hardcoded v0.1 brand string that drifted four releases behind.

Renderer features

  • ScopeBuddy: new /scopebuddy page, KV override editor, per-game override component, detection toasts in the Gamescope builder.
  • Command palette (Ctrl+K) with cross-page navigation events.
  • Gamepad tester component.
  • Game detail refactor: KPI strip + tabs + profiles menu split into dedicated components; glow-card retired.
  • Renderer-wide HeroUI v3 polish: shared info-hint affordance, surface-elevated / border-border tokens replacing ad-hoc opacity classes.

Python backend

  • New scopebuddy module + /scopebuddy API routes (detection, KV override read/write).
  • Hardening in gamescope, protontricks, presets, steam, tool_check, _vendor_compat pulled from the internal review.
  • API state/model split for testability. New tests/test_scopebuddy.py (was being accidentally gitignored — see below).

Repo structure / docs

  • docs/python-review.mddocs/internal/python-review.md.
  • scripts/linux-matrix.shscripts/ci/linux-matrix.sh (CI workflow and ROOT="…/../.." updated to match).
  • New vm-test/ harness: run-vm.sh (Quickemu launcher), provision/*.sh per-distro, docs/* per-distro runbooks, smoke-checklist.md.
  • run-vm.sh now stages vm-test/docs/ into the SMB share at /mnt/protonshift-build/_docs/ so guests can less runbooks directly inside the VM.
  • Bugfix: .gitignore previously contained dropped-in vm-test/ and tests/ lines that were hiding the entire VM harness and the new scopebuddy test from git. Removed.

Test plan

  • ruff check src/ — clean
  • pytest -q — 103 passed
  • pnpm run build:electron (tsc) — clean
  • pnpm --filter protonshift-renderer exec tsc --noEmit — clean
  • Tag v0.9.5 already pushed; gh release create v0.9.5 fires build-release.yml which builds AppImage/.deb/.rpm/.flatpak and attaches them automatically. Verify artifacts on the published release.
  • Smoke: install one of the produced packages on a real distro per vm-test/smoke-checklist.md, confirm the navbar shows v0.9.5 · Linux gaming HUD.

Made with Cursor

I4cTime and others added 3 commits May 12, 2026 02:54
The static server backing the production renderer served `*.html` for
every request and ignored the `RSC` / `Next-Router-*` headers that
Next.js 16 App Router sends on client-side navigation. Clicking a
Navbar.Item triggered the router, which fetched `/<route>?_rsc=...`,
got HTML back, failed to parse it as an RSC payload, and silently bailed
— the URL never changed and the page never switched. Reproducible on
Ubuntu and Bazzite AppImage builds, masked in `next dev` because the dev
server handles RSC itself.

`next build` with `output: "export"` writes the matching `<route>.txt`
RSC payload alongside each `<route>.html`. Detect the RSC headers and
serve those payloads with `Content-Type: text/x-component`, leaving the
HTML fall-through for plain page loads / hard reloads. Adds a `Vary`
header so any future caching layer keys correctly on the FLIGHT headers.

Includes the previously uncommitted AppImage runtime hardening that
already shipped in the 0.9.1 image: prefer the bundled
python-build-standalone interpreter with `LD_LIBRARY_PATH` pinned to its
own libpython, set `PYTHONDONTWRITEBYTECODE` on read-only mounts, keep a
tail of stderr so a backend crash surfaces in the rejection message, and
gate DevTools auto-open on `PROTONSHIFT_DEVTOOLS=1`.

Co-authored-by: Cursor <cursoragent@cursor.com>
…t harness

App + UI
- Bump all version sources to 0.9.5 in lockstep:
  electron/package.json, electron/renderer/package.json,
  src/game_setup_hub/__init__.py, assets/io.github.protonshift.metainfo.xml,
  .github/ISSUE_TEMPLATE/bug_report.yml placeholder.
- Wire navbar version readout to app.getVersion() via a new
  get-app-version IPC handler + electron.getVersion() preload bridge,
  so future bumps auto-propagate to the brand block (replaces the
  long-stale hardcoded "v0.1" string).

Renderer features
- ScopeBuddy: new /scopebuddy page, override editor (scb-kv-editor),
  per-game override component, detection toasts in gamescope-builder.
- Command palette (Ctrl+K) with cross-page navigation events.
- Gamepad tester component.
- Game detail refactor: KPI strip + tabs + profiles menu split out
  into dedicated components; glow-card primitive retired.
- Renderer-wide HeroUI v3 polish: shared info-hint affordance,
  surface-elevated/border-border tokens replacing ad-hoc opacity classes.

Python backend
- New scopebuddy module + /scopebuddy API routes (detection, KV
  override read/write).
- gamescope, protontricks, presets, steam, tool_check, _vendor_compat
  hardening pulled from internal review.
- API state/model split for testability; tests/test_scopebuddy.py +
  expanded test_gamescope.py.

Repo structure
- docs/python-review.md -> docs/internal/python-review.md.
- scripts/linux-matrix.sh -> scripts/ci/linux-matrix.sh (CI workflow
  and ROOT-resolution updated to match).
- New vm-test/ harness: run-vm.sh (Quickemu launcher), provision/*.sh
  per-distro, docs/* per-distro runbooks, smoke-checklist.md.
  run-vm.sh now stages vm-test/docs into the SMB share at
  /mnt/protonshift-build/_docs/ so guests can `less` the runbooks
  directly inside the VM.
- Stop accidentally gitignoring vm-test/ and tests/ (the dropped-in
  lines at the end of .gitignore were hiding the entire new harness
  and the new scopebuddy tests from git).

Co-authored-by: Cursor <cursoragent@cursor.com>
The @heroui-pro/react package ships a postinstall hook that fetches the real
component dist from the HeroUI Pro registry. Without HEROUI_AUTH_TOKEN it
stops at the skeleton package, so tsc + Next can't resolve the module and
both CI typechecks and the release build fail on GitHub Actions.

Wire the secret into the Install dependencies step in both ci.yml and
build-release.yml. The repo secret is set separately via `gh secret set
HEROUI_AUTH_TOKEN` (sourced from q-ring).

Folded into v0.9.5 release.

Co-authored-by: Cursor <cursoragent@cursor.com>
@I4cTime I4cTime merged commit 75cafb4 into main May 13, 2026
23 of 27 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant